package org.easy.bytetts;

import org.easy.bytetts.dto.ByteTtsResponse;
import org.easy.bytetts.dto.ByteTtsVoiceEnums;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;


@Configuration
@EnableConfigurationProperties({ByteTtsProperties.class})
@ConditionalOnProperty(prefix = ByteTtsProperties.PREFIX, name = "enabled", havingValue = "true")
public class ByteTtsAutoConfiguration {

    @Resource
    private ByteTtsProperties byteTtsProperties;

    @Bean
    public ByteTtsTemplate byteTtsTemplate() {
        ByteTtsHttpClient client = new ByteTtsHttpClient(byteTtsProperties.getAppid(), byteTtsProperties.getAccessToken());
        return new ByteTtsTemplate(client);
    }

    @Bean
    public ByteRealtimeTtsTemplate byteRealtimeTtsTemplate() {
        ByteRealtimeTtsClient client = new ByteRealtimeTtsClient(byteTtsProperties.getAppid(), byteTtsProperties.getAccessToken());
        return new ByteRealtimeTtsTemplate(client);
    }

    public static void main(String[] args) {
        ByteTtsHttpClient client = new ByteTtsHttpClient("2262349642", "4sAKzMMKquDhRNwb2ol0wQ02NPshlAE6");
        ByteTtsTemplate template = new ByteTtsTemplate(client);


        ByteTtsVoiceEnums zhFemaleDaimengchuanmeiMoonBigtts = ByteTtsVoiceEnums.zh_male_beijingxiaoye_moon_bigtts;

        long time = System.currentTimeMillis();
        ByteTtsResponse tts = template.tts(System.currentTimeMillis(), zhFemaleDaimengchuanmeiMoonBigtts, "这是一个晴天，适合去玩");
        byte[] string = Base64.getDecoder().decode(tts.getData());

        String filePath = "output.mp3";
        try (FileOutputStream fileOutputStream = new FileOutputStream(filePath)) {
            fileOutputStream.write(string);
            System.out.println("文件已保存到: " + filePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(System.currentTimeMillis() - time);
    }


}
